package com.english.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.english.entity.StudentClassHours;
import com.english.entity.ClassHoursLog;

import java.util.List;

/**
 * 学生班级课时服务接口
 *
 * @author wlq
 * @since 2025-08-06
 */
public interface StudentClassHoursService extends IService<StudentClassHours> {

    /**
     * 获取学生的所有班级课时信息
     */
    List<StudentClassHours> getStudentClassHours(Long studentId);

    /**
     * 获取班级的所有学生课时信息
     */
    List<StudentClassHours> getClassStudentHours(Long classId);

    /**
     * 获取学生在特定班级的课时信息
     */
    StudentClassHours getStudentClassHours(Long studentId, Long classId);

    /**
     * 获取学生总剩余课时
     */
    Integer getTotalRemainingHours(Long studentId);

    /**
     * 调整学生班级课时（带日志记录）
     */
    boolean adjustStudentClassHours(Long studentId, Long classId, Integer changeValue, 
                                   ClassHoursLog.ChangeType changeType, String title, 
                                   String description, Long adminId);

    /**
     * 签退扣减课时
     */
    boolean consumeHoursOnSignOut(Long studentId, Long classId, Long adminId, Long attendanceId);

    /**
     * 充值增加课时
     */
    boolean addHoursOnRecharge(Long studentId, Long classId, Integer hours, Long rechargeId);

    /**
     * 初始化学生班级课时记录
     */
    boolean initStudentClassHours(Long studentId, Long classId);

    /**
     * 获取课时变动日志
     */
    List<ClassHoursLog> getHoursChangeLog(Long studentId, Long classId);
} 